//给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。
//
// 请注意 ，必须在不复制数组的情况下原地对数组进行操作。
//
//
//
// 示例 1:
//
//
//输入: nums = [0,1,0,3,12]
//输出: [1,3,12,0,0]
//
//
// 示例 2:
//
//
//输入: nums = [0]
//输出: [0]
//
//
//
// 提示:
//
//
//
// 1 <= nums.length <= 10⁴
// -2³¹ <= nums[i] <= 2³¹ - 1
//
//
//
//
// 进阶：你能尽量减少完成的操作次数吗？
//
// Related Topics 数组与矩阵 双指针 👍 1974 👎 0


//leetcode submit region begin(Prohibit modification and deletion)
/**
 Do not return anything, modify nums in-place instead.
 */
function moveZeroes(nums: number[]): void {
    // 记录0的个数
    let zeroNum : number = 0
    // 记录非0数字移动的位置
    let index : number = 0
    for (let i = 0; i < nums.length; i ++) {
        if (nums[i] === 0) {
            zeroNum ++
        }
        else {
            nums[index] = nums[i]
            index ++
        }
    }
    // 此时 数组后面有zeroNum个数字是不对的
    for (let j = 0; j < zeroNum; j ++) {
        nums[nums.length - j - 1] = 0
    }
};
//leetcode submit region end(Prohibit modification and deletion)
